#include "audio.h"

CAudio::CAudio ()    // constructor
{
 type = 0;    // reset type
 loop=0;  //  no se repite.
 channel=0;
 paused=false;
 stopped=false;
}

//Mix_OpenAudio(44100, MIX_DEFAULT_FORMAT, 2, 1024)
void CAudio::init(int freq,int channels,int sample_size)         // inicia el sistema de audio.
{
	if (Mix_OpenAudio(freq, MIX_DEFAULT_FORMAT, channel, sample_size) == -1)              // fija el formato para el sonido.
       printf("Error al iniciar el Audio: %s\n", Mix_GetError());
           
}

void CAudio::play()                                     // play sound/music
{
  /* resume if were paused */
  if (paused==true && type==1) 
  {
   paused=false;
   Mix_ResumeMusic();
   return;
  }     
  /* play sound */
  if (type==0)  // play sound
    Mix_PlayChannel(channel,sample,loop); // reproduce el sonido.
  /* play music */
  if (type==1)
   { 
    Mix_PlayMusic(music,loop);
    stopped = false;
   }

}

/* stop music/sound */
void CAudio::stop()
{
  if (type==0)  // play sound
    Mix_HaltChannel(-1);
  if (type==1)
  {
    Mix_HaltMusic();
    stopped=true;
  }
}

/* plause music */
void CAudio::pause()
{
  //if (type==0)  // play sound
  //  Mix_HaltChannel(-1);
  if (type==1)
  {
    Mix_PauseMusic();
    paused=true;
  }
}

void CAudio::load(char fname[125])
{
	if (type==0) // load sound
	{
		sample = Mix_LoadWAV(fname);
		if (sample==0) 
         printf ("CAudio::Load:Error al cargar el sonido : %s\n",fname);
		  else
		   printf ("CAudio::Load: Se ha cargado el sonido: %s\n",fname);
		 
	}
	if (type==1) // load music
	{
		music = Mix_LoadMUS(fname);
		if (music==0) 
       	 printf ("CAudio::Load:Error al cargar la musica : %s\n",fname);
	      else
		   printf ("CAudio::Load: Se ha cargado la musica: %s\n",fname);
		
	}
}

void CAudio::end()
{
	Mix_FreeChunk(sample);
	Mix_FreeMusic(music);
	Mix_CloseAudio();
}

/*
extern void ChangeVolume (int vol)
{
    // Get current average sound volume and music volume
    //volume = Mix_Volume(-1, -1);
    //mvolume = Mix_VolumeMusic(-1);

    // Change sound volume for all channels, range is 0 to 128
    volume = volume + 10*vol;
    if (volume < 0)
        volume = 0;
    Mix_Volume(-1,volume);

    // Change music volume, range is 0 to 128
    mvolume = mvolume + 10*vol;
    if (mvolume < 0)
        mvolume = 0;
    Mix_VolumeMusic(mvolume);
    
    // Change default
    soundVolume = volume;
} */

	
